package com.wing.storage.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wing.common.utils.JsonResult;
import com.wing.storage.model.entity.*;
import com.wing.storage.model.response.PurchaseOutDetailExportVO;
import com.wing.storage.model.response.PurchaseOutDetailInfoExportVO;
import com.wing.storage.model.response.PurchaseOutExportVO;

import java.util.List;
import java.util.Map;

/**
 * 仓库产品出库作业-Service
 *
 * @author xiayang
 */
public interface ProductStorageWorkOutService extends IService<ProductStorageWorkOut> {

    /**
     * 仓库产品出库作业列表
     *
     * @param page   分页信息
     * @param params 参数信息
     * @return
     */
    Page<ProductStorageWorkOut> pageList(Page page, Map<String, Object> params);

    /**
     * 添加仓库产品出库作业
     *
     * @param productStorageWorkOut 仓库产品出库作业
     * @return
     */
    JsonResult add(ProductStorageWorkOut productStorageWorkOut);

    /**
     * 更新仓库产品出库作业
     *
     * @param productStorageWorkOut 仓库产品出库作业
     * @return
     */
    void update(ProductStorageWorkOut productStorageWorkOut);

    /**
     * 删除仓库产品出库作业
     *
     * @param productStorageWorkOutId 仓库产品出库作业ID
     * @return
     */
    void del(Long productStorageWorkOutId);

    /**
     * 仓库产品出库作业详情
     *
     * @param productStorageWorkOutId 仓库产品出库作业ID
     * @return
     */
    ProductStorageWorkOut get(Long productStorageWorkOutId);


    /**
     * 查询出库作业明细
     * @param page
     * @param params
     * @return
     */
    Page<ProductStorageWorkOutDetail> getProductStorageWorkOutDetail(Page page, Map<String, Object> params);

    /**
     * 查询出库作业明细统计
     * @param page
     * @param params
     * @return
     */
    Page<ProductStorageWorkOutDetailStatic> getProductStorageWorkOutDetailStatic(Page page, Map<String, Object> params);

    /**
     * 导出出库作业明细统计
     * @param params
     * @return
     */
    List<PurchaseOutDetailExportVO> exportProductStorageWorkOutDetailStatic(Map<String, Object> params);

    /**
     * 导出出库作业明细
     * @param params
     * @return
     */
    List<PurchaseOutDetailInfoExportVO> exportProductStorageWorkOutDetail(Map<String, Object> params);


    /**
     * 导出出库作业列表
     * @param params
     * @return
     */
    List<PurchaseOutExportVO> exportProductStoragePageList(Map<String, Object> params);


}
